package com.ylr.config.framework.service;

import com.ylr.base.common.dto.NameValue;
import com.ylr.base.common.dto.PageDto;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylr.config.common.dto.enum_.EnumDto;
import com.ylr.config.common.vo.enum_.EnumFormVo;
import com.ylr.config.common.vo.enum_.EnumVo;
import com.ylr.config.framework.entity.EnumEntity;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-02 18:59:16
 * className: EnumService
 * version: 1.0
 * description:
 */
public interface EnumService extends IService<EnumEntity> {

    /**
     * 保存新枚举配置操作
     * @param enumVo 参数对象
     */
    void saveEnum(EnumVo enumVo);

    /**
     * 批量保存新枚举配置操作
     * @param enumVoList 参数对象列表
     */
    void batchSaveEnum(List<EnumVo> enumVoList);

    /**
     * 分页查询枚举配置列表操作
     * @param enumFormVo 参数对象
     * @return 枚举配置分页数据
     */
    PageDto<EnumDto> pageEnumList(EnumFormVo enumFormVo);

    /**
     * 获取枚举配置列表操作
     * @param type 枚举类型
     * @return 枚举配置列表
     */
    List<NameValue<String>> getEnumList(Integer type);

    /**
     * 获取枚举值列表操作
     * @param type 枚举类型
     * @return 枚举值列表
     */
    List<Long> getValueList(Integer type);

    /**
     * 获取枚举配置操作
     * @param id 主键
     * @return 枚举配置
     */
    EnumDto getEnum(Long id);

    /**
     * 修改新枚举配置操作
     * @param enumVo 参数对象
     */
    void updateEnum(EnumVo enumVo);

    /**
     * 删除枚举配置操作
     * @param idList 主键列表
     */
    void deleteEnum(List<Long> idList);

}

